Consumers have an ever-increasing array of options for consuming media content, in terms of the types of media content (e.g., video, audio, text, etc.), providers of the media content, and devices for consuming the media content. Media content providers are becoming increasingly sophisticated and effective at providing media content quickly and reliably to consumers.
Media content (e.g., movies, television shows, videos, music, and electronic books) may be organized as a series of fragments including metadata and media data. In video on demand (VOD) scenarios, the size and duration of the fragments is encoded offline and detailed in a manifest file. For VOD, the manifest file may be used by a destination client to determine the size and duration of each fragment during the decoding process. Unlike video-on-demand (VOD) content, live streaming content typically does not have a distinct end point and may continue indefinitely. In addition, VOD content may be buffered in client devices well in advance of the client playhead (i.e., the content fragment being currently rendered by the client). This is not the case for live content streaming because the live content is being generated in real time and therefore may not yet exist.
Due to network reliability constraints and limited buffering availability, media data is often streamed over networks using adaptive bitrate streaming for playback on a viewer's device. Adaptive bitrate streaming includes determining the viewer device's bandwidth and hardware resources (e.g., available central processing unit (CPU) capacity) in real time and adjusting the quality of the media content that is requested from a media server and played back on the viewer's device to account for changes in the bandwidth and hardware resources. For example, variable bit rate (VBR) encoding may be employed and involves adjusting the data rate down to an upper limit, based on the data required by a compressor. In addition, some encoders permit the setting of a maximum allowed bitrate or maximum quality value, also known as Constrained Variable Bitrate (CVBR). However, since accurate fragment size and fragment duration determinations are not achieved in a live streaming context, adaptive bitrate streaming of a live stream produces performance issues resulting in an unreliable or lower quality playback of the media content.
In a conventional live streaming scenario, a current fragment of the media file is downloaded completely to determine the size and duration of the fragment. A client playback device's initial prediction of the current fragment size and duration may be incorrect (e.g., due to changes to available bandwidth) and determined only after full download of the fragment. This discrepancy results in re-buffering or interruption of the stream, thereby negatively impacting a user's viewing experience.